<#include "/@inc/funcMacros.ftl"> 
<#include "/@inc/copyright.txt">
<#assign className = TriaGram + "UtlLogger">
<@pp.renameOutputFile name=className+".h">
</@pp.renameOutputFile>
#ifndef ${className}_H
#define ${className}_H

#include <fstream>
#include <time.h>

using namespace std;

#define ${className}File    1 << 0
#define ${className}Warn    1 << 1
#define ${className}Error   1 << 2
#define ${className}Cout    1 << 3

#define ${className}Time    1 << 4

typedef ofstream RAWStream ;

class ${className}
{
public:
	${className}(const char * ipTag);
	virtual ~${className}(void);

	static void Init( unsigned int iOptions) ;

	ostream & GetStream(int iIndex) ;

	void PrintTabs(int iIndex) ;

	// To be called inside MACROS only
	static unsigned int _options ;

private:
	void Print(const char * ipTag, const char * ipAppendix, const char * ipTime = NULL) ;

	const char * _pTag ;

	static int _nTabs ;

	static RAWStream _streams[3] ;

	clock_t _start;
};

class ${className}Init
{
public:
	${className}Init(RAWStream iStreams[], unsigned int iOptions);

	virtual ~${className}Init(void);
};

#endif

